package cn.jyj.springframework.beans.factory;

import cn.jyj.springframework.beans.BeansException;
import cn.jyj.springframework.beans.factory.config.BeanDefinition;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 已经存在的 Bean 工厂接口用于获取 Bean 对象，这次新增加了按照类型获取 Bean 的方法：
 *   <T> T getBean(String name, Class<T> requiredType)
 *
 * @Author 老顽固小可爱
 * @Date 2023/1/8 11:10
 * @Version 1.0
 */
public interface BeanFactory {

    Object getBean(String name) throws BeansException;

    /*
     * 重载了一个含有入参信息 args 的 getBean 方法，这样就可以方便传递入参给构造函数实例化了。
     * */
    Object getBean(String name, Object... args) throws BeansException;

    <T> T getBean(String name, Class<T> requiredType) throws BeansException;
}

